package cn.yh.shop.admin.dao;

import java.util.List;
import java.util.Map;

/**
 * @Description:基础Dao(还需在XML文件里，有对应的SQL语句)
 * @author:"许荣斐"
 * @time:2016年12月20日 上午10:43:54
 */
public interface BaseDao<T> {
	
	/**
	 * @Description:保存
	 * @param t 参数:实体类
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:44:14
	 */
	void save(T t);
	
	/**
	 * @Description:保存
	 * @param map 参数:map集合
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:44:50
	 */
	void save(Map<String, Object> map);
	
	/**
	 * @Description:批量保存
	 * @param list 参数:存有实体的list集合
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:45:18
	 */
	void saveBatch(List<T> list);
	
	/**
	 * @Description:更新
	 * @param t 参数:要更新的实体
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:45:56
	 */
	int update(T t);
	
	/**
	 * @Description:更新
	 * @param map
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:46:28
	 */
	int update(Map<String, Object> map);
	
	/**
	 * @Description:根据id删除
	 * @param id
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:47:13
	 */
	int delete(Object id);
	
	/**
	 * @Description:多条件删除
	 * @param map
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:47:36
	 */
	int delete(Map<String, Object> map);
	
	/**
	 * @Description:批量删除
	 * @param id
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:47:54
	 */
	int deleteBatch(Object[] id);

	/**
	 * @Description:根据id查询单个实体
	 * @param id
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:48:12
	 */
	T queryObject(Object id);
	
	/**
	 * @Description:多条件查询
	 * @param map
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:49:27
	 */
	List<T> queryList(Map<String, Object> map);
	
	/**
	 * @Description:根据id查询多个实体
	 * @param id
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:49:58
	 */
	List<T> queryList(Object id);
	
	/**
	 * @Description:根据条件查询集合的总数
	 * @param map
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:51:16
	 */
	int queryTotal(Map<String, Object> map);

	/**
	 * @Description:查询集合的总个数
	 * @author: "许荣斐"
	 * @time:2016年12月20日 上午10:51:18
	 */
	int queryTotal();
}
